package com.guomei.bean.curse;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 新增或更新考试DTO
 */
@Data
public class AddOrUpdateExam {
    /**
     * 考试ID
     */
    private Long id;

    /**
     * 考试名称
     */
    @NotBlank(message = "考试名称不能为空")
    private String examName;

    /**
     * 关联课程ID(为空表示通用考试)
     */
    private Long courseId;

    /**
     * 封面图片
     */
    private String coverImage;

    /**
     * 考试描述
     */
    private String description;

    /**
     * 考试类型(1-手工上传,2-题库随机)
     */
    @NotNull(message = "考试类型不能为空")
    private Short examType;

    /**
     * 考试时长(分钟)
     */
    @NotNull(message = "考试时长不能为空")
    private Integer duration;

    /**
     * 考试费用
     */
    @NotNull(message = "考试费用不能为空")
    private BigDecimal price;

    /**
     * 开始时间
     */
    @NotNull(message = "开始时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    @NotNull(message = "结束时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime endTime;

    /**
     * 状态(0-未发布,1-已发布,2-已结束)
     */
    private Short status;

    /**
     * 创建人ID
     */
    @NotNull(message = "创建人ID不能为空")
    private Long creatorId;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createdTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updatedTime;
}
